

#include "tf_Polygon.h"
#include "tf_Geom_Algorithm.h"
#include <vector>
#include <math.h>
#include <algorithm>
using namespace std;



double TfPolygon::GetPointToPointArea(TfPoint pta,TfPoint ptb)
{
   double s;
   s = (ptb.GetXYZ(1)-pta.GetXYZ(1))*(ptb.GetXYZ(2)+pta.GetXYZ(2));
   return( s ) ;
}

// double TfPolygon::GetPolygonArea()
// {
// 	int i,size;
// 	double s = 0.0;
// 	vector<TfPoint> ptVec;
// 	ptVec = GetLinePtVec();
// 	size = ptVec.size();
// 	for (i = 0; i < size-1;i++)
// 	{
// 		s += GetPointToPointArea(ptVec[i],ptVec[i+1]);
// 	}
// 	s = fabs(s);
// 	return s;
// }

// double TfPolygon::GetPolygonPerimeter()
// {
// 	int i,size;
// 	double p = 0.0;
// 	vector<TfPoint> ptVec;
// 	ptVec = GetLinePtVec();
// 	size = ptVec.size();
// 	for (i = 0; i < size-1;i++)
// 	{
// 		p += GetTwoPointDis(ptVec[i],ptVec[i+1]);
// 	}
// 	return p;
// }

// int TfPolygon::GetPolygonDirection()
// {
// 	int i,size;
// 	double s = 0.0;
// 	vector<TfPoint> ptVec;
// 	ptVec = GetLinePtVec();
// 	size = ptVec.size();
// 	for (i = 0; i < size-1;i++)
// 	{
// 		s += GetPointToPointArea(ptVec[i],ptVec[i+1]);
// 	}
// 	if( s > 0.0 ) return( TF_CLOCKWISE );
// 	else     return( TF_ANTICLOCKWISE );
// 
// }


// void TfPolygon::ReversePolygon()
// {
// 	vector<TfPoint> ptVec;
// 	ptVec = GetLinePtVec();
// 	std::reverse(ptVec.begin(),ptVec.end());
// 	SetLinePtVec(ptVec);
// }
void TfPolygon::FilterPolygon(double FilterTol)
{

}

void TfPolygon::OffsetPolygon()
{

}

// int TfPolygon::GetNodePolygonNum()
// {
// 	vector<TfPoint> ptVec;
// 	ptVec = GetLinePtVec();
// 	return ptVec.size();
// }